package com.ybkj.o2o.mc.mapper;


import com.ybkj.o2o.mc.entity.PassengerAddress;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PassengerAddressMapper {
  /**
   * 根据地址、类型、乘客主键查询常用地址信息.
   *
   * @param address     地址
   * @param type        类型
   * @param passengerId 乘客主键
   * @return 地址信息
   */
  PassengerAddress selectByAddressAndTypeAndPassenger(@Param("address") String address,
                                                      @Param("type") Integer type,
                                                      @Param("passengerId") Long passengerId);


  /**
   * 保存乘客常用目的地信息.
   *
   * @param record 常用目的地信息
   * @return 常用目的地信息
   */
  int insert(PassengerAddress record);

  /**
   * 根据主键,乘客Id删除乘客常用目的地.
   *
   * @param addressId   地址主键
   * @param passengerId 乘客主键
   * @return 受影响行数
   */
  int delete(@Param("addressId") Long addressId, @Param("passengerId") Long passengerId);

  /**
   * 根据主键查询乘客的常用目的地.
   *
   * @param addressId   地址主键
   * @param passengerId 乘客主键
   * @return 常用目的地信息
   */
  PassengerAddress selectByIdAndPassenger(@Param("addressId") Long addressId,
                                          @Param("passengerId") Long passengerId);

  /**
   * 根据主键与乘客主键修改乘客的常用目的地.
   *
   * @param record 常用目的地信息
   * @return 受影响行数
   */
  int updateByPrimaryKey(PassengerAddress record);

  /**
   * 根据乘客主键与类型查询乘客常用目的地.
   *
   * @param passengerId 乘客主键
   * @param type        类型
   * @return 常用目的地信息
   */
  PassengerAddress findByPassengerAndType(@Param("passengerId") Long passengerId,
                                          @Param("type") Integer type);

  /**
   * 查询乘客所有常用目的地.
   *
   * @param passengerId 乘客主键
   * @return 常用目的地信息
   */
  List<PassengerAddress> selectByPassenger(Long passengerId);

  /**
   * 分页查询乘客所有常用目的地.
   *
   * @param passengerId 乘客主键,为null则查询所有
   * @param offset      偏移量
   * @param rows        每页显示数量
   * @return 常用目的地列表
   */
  List<PassengerAddress> selectByPassengerForPage(@Param("passengerId") Long passengerId,
                                                  @Param("offset") int offset,
                                                  @Param("rows") int rows);

  /**
   * 统计乘客所有常用目的地.
   *
   * @param passengerId 乘客主键,为null则查询所有
   * @return 常用目的地总数
   */
  long countByPassenger(Long passengerId);

  /**
   * 根据乘客主键删除所有的常用目的地.
   *
   * @param passengerId 乘客主键
   * @return 删除的数量
   */
  int deleteByPassengerId(Long passengerId);

  /**
   * 根据乘客主键删除所有的常用目的地.
   *
   * @param passengers 乘客主键列表
   * @return 删除的数量
   */
  int deleteByPassengers(@Param("passengers") List<Long> passengers);
}